package com.ruoyi.qd.service;

import java.math.BigDecimal;
import java.util.List;
import com.mybatisflex.core.paginate.Page;
import com.ruoyi.common.core.page.PageDomain;
import com.mybatisflex.core.service.IService;
import com.ruoyi.qd.domain.TradeWater;
import com.ruoyi.qd.vo.TradeWaterAddReq;
import com.ruoyi.qd.vo.TradeWaterPageH5Req;
import com.ruoyi.qd.vo.TradeWaterPageH5Res;
import com.ruoyi.qd.vo.TradeWaterPageReq;
import com.ruoyi.qd.vo.TradeWaterPageRes;

/**
 * 交易流水Service接口
 * 
 * @author tushiguang
 * @date 2024-07-24
 */
public interface ITradeWaterService extends IService<TradeWater> {
    /**
     * 根据用户id计算余额
     */
    BigDecimal calculateBalance(Long userId);

    /**
     * 新增交易流水
     */
    void add(TradeWaterAddReq tradeWaterAddReq);

    /**
     * 查询交易流水
     * 
     * @param id 交易流水主键
     * @return 交易流水
     */
    TradeWater selectTradeWaterById(Long id);

    /**
     * 分页查询交易流水列表
     */
    Page<TradeWaterPageH5Res> selectTradeWaterPageH5(PageDomain pageDomain, TradeWaterPageH5Req tradeWaterPageH5Req);


    /**
     * 分页查询交易流水列表
     */
    Page<TradeWaterPageRes> selectTradeWaterPage(PageDomain pageDomain, TradeWaterPageReq tradeWaterPageReq);

    /**
     * 查询交易流水列表
     *
     * @param tradeWater 交易流水
     * @return 交易流水集合
     */
    List<TradeWater> selectTradeWaterList(TradeWater tradeWater);

    /**
     * 修改交易流水
     * 
     * @param tradeWater 交易流水
     * @return 结果
     */
    int updateTradeWater(TradeWater tradeWater);

    /**
     * 批量删除交易流水
     * 
     * @param ids 需要删除的交易流水主键集合
     * @return 结果
     */
    int deleteTradeWaterByIds(Long[] ids);

    /**
     * 删除交易流水信息
     * 
     * @param id 交易流水主键
     * @return 结果
     */
    int deleteTradeWaterById(Long id);
}
